如果应用使用组件扫描,比如@SpringBootApplication
或@ComponentScan
,你可能发现为测试类创建的组件或配置在任何地方都可能偶然扫描到。为了防止这种情况,Spring Boot提供了@TestComponent
和@TestConfiguration
注解,可用在src/test/java
目录下的类,以暗示它们不应该被扫描。
注 只有上层类需要@TestComponent
和@TestConfiguration
注解,如果你在测试类(任何有@Test
方法或@RunWith
注解的类)中定义@Configuration
或@Component
内部类,它们将被自动过滤。
注 如果直接使用@ComponentScan
(比如不通过@SpringBootApplication
),你需要为它注册TypeExcludeFilter
,具体参考Javadoc。